// 使用全局变量
let hospitalData = null;
let hospitalService = {};

// 显示JSON状态指示器
function showJsonStatus(status, message) {
    // 确保DOM已加载
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', () => {
            updateJsonStatusUI(status, message);
        });
    } else {
        updateJsonStatusUI(status, message);
    }
}

// 更新JSON状态UI
function updateJsonStatusUI(status, message) {
    let statusElement = document.getElementById('jsonStatus');
    
    // 如果元素不存在，创建一个
    if (!statusElement) {
        statusElement = document.createElement('div');
        statusElement.id = 'jsonStatus';
        statusElement.className = 'status-indicator';
        document.body.appendChild(statusElement);
        
        const statusIcon = document.createElement('i');
        statusIcon.id = 'jsonStatusIcon';
        
        const statusText = document.createElement('span');
        statusText.id = 'jsonStatusText';
        
        statusElement.appendChild(statusIcon);
        statusElement.appendChild(statusText);
    }
    
    const statusIcon = document.getElementById('jsonStatusIcon');
    const statusText = document.getElementById('jsonStatusText');
    
    // 设置状态样式
    if (status === 'loading') {
        statusElement.className = 'status-indicator status-loading';
        statusIcon.className = 'fas fa-circle-notch fa-spin';
    } else if (status === 'success') {
        // 使用自定义样式，不使用通用的status-success类
        statusElement.className = 'status-indicator';
        statusElement.style.backgroundColor = '#e6f7ff'; // 浅蓝色背景
        statusElement.style.color = '#0066cc'; // 深蓝色文字
        statusIcon.className = 'fas fa-check-circle';
    } else if (status === 'error') {
        statusElement.className = 'status-indicator status-error';
        statusIcon.className = 'fas fa-exclamation-circle';
    }
    
    statusText.textContent = message;
    statusElement.style.display = 'inline-flex'; // 保持常显
}

async function loadHospitalData() {
    // 添加性能监控
    if (window.PerformanceMonitor) {
        window.PerformanceMonitor.start('加载医院数据');
    }
    
    console.time('加载医院数据');
    // 显示加载状态
    showJsonStatus('loading', '加载医院数据...');
    
    try {
        // 使用相对路径，不要用绝对路径
        const response = await (window.PerformanceMonitor ? 
            window.PerformanceMonitor.monitorApiCall('ks.json?t=' + new Date().getTime()) : 
            fetch('ks.json?t=' + new Date().getTime()));
            
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        
        // 添加性能监控
        if (window.PerformanceMonitor) {
            window.PerformanceMonitor.start('解析医院数据');
        }
        
        let rawText = await response.text();
        console.log('原始JSON前50个字符:', rawText.substring(0, 50));
        
        // 预处理 JSON 文本，移除注释
        rawText = rawText.replace(/\/\/.*$/gm, ''); // 移除单行注释
        rawText = rawText.replace(/\/\*[\s\S]*?\*\//g, ''); // 移除多行注释
        
        try {
            const data = JSON.parse(rawText);
            hospitalData = data.hospital;
            console.log('医院数据加载成功，包含', hospitalData.departments.length, '个科室');
            console.timeEnd('加载医院数据');
            
            // 显示成功状态
            showJsonStatus('success', `已加载 ${hospitalData.departments.length} 个科室`);
            
            // 结束性能监控
            if (window.PerformanceMonitor) {
                window.PerformanceMonitor.end('解析医院数据');
                window.PerformanceMonitor.end('加载医院数据');
            }
            
            return hospitalData;
        } catch (parseError) {
            console.error('JSON解析错误:', parseError);
            
            // 显示错误状态
            showJsonStatus('error', 'JSON解析错误: ' + parseError.message);
            
            // 结束性能监控
            if (window.PerformanceMonitor) {
                window.PerformanceMonitor.end('解析医院数据');
                window.PerformanceMonitor.end('加载医院数据');
            }
            
            throw parseError;
        }
    } catch (error) {
        console.error('加载医院数据失败:', error);
        console.timeEnd('加载医院数据');
        
        // 显示错误状态
        showJsonStatus('error', '加载失败: ' + error.message);
        
        // 结束性能监控
        if (window.PerformanceMonitor) {
            window.PerformanceMonitor.end('加载医院数据');
        }
        
        return null;
    }
}

// 定义全局函数
hospitalService.getDepartmentInfo = function(deptName) {
    if (!hospitalData) return null;
    return hospitalData.departments.find(dept => dept.name === deptName);
};

hospitalService.getAllDepartments = function() {
    return hospitalData?.departments || [];
};

// 初始加载数据
window.addEventListener('DOMContentLoaded', () => {
    loadHospitalData();
});

// 将服务暴露到全局作用域
window.hospitalService = hospitalService;

// 确保没有任何 export 语句